import sys
import os
from loguru import logger
from backend.config import get_log_level

def setup_logger():
    """配置loguru日志记录器"""
    log_level = get_log_level()
    
    # 移除默认配置
    logger.remove()
    
    # 添加控制台输出（处理编码问题）
    def console_sink(msg):
        # 确保中文正确显示
        try:
            # Windows 控制台默认使用 utf-8 编码
            encoding = 'utf-8'
            sys.stdout.buffer.write(msg.encode(encoding, errors='replace'))
            sys.stdout.flush()
        except Exception:
            sys.stdout.write(msg)
    
    logger.add(
        console_sink,
        level=log_level,
        format="<green>{time:YYYY-MM-DD HH:mm:ss}</green> | <level>{level: <8}</level> | <cyan>{name}</cyan>:<cyan>{function}</cyan>:<cyan>{line}</cyan> - <level>{message}</level>",
        colorize=True
    )
    
    # 添加文件输出（生产环境和开发环境都生效）
    log_dir = "logs"
    os.makedirs(log_dir, exist_ok=True)
    
    logger.add(
        os.path.join(log_dir, "app_{time:YYYY-MM-DD}.log"),
        rotation="00:00",
        retention="7 days",
        level=log_level,
        encoding="utf-8"
    )
    
    return logger

# 创建全局日志实例
log = setup_logger()